package net.tv90.bfmccoreqqbot.api;


import net.tv90.bfmccoreqqbot.api.entity.MessageContext;

public interface MessageHandler {

    /**
     * 处理消息
     *
     * @param msg 消息
     * @return 返回处理结果
     */
    String handleMessage(MessageContext msg);

    /**
     * 处理消息前 拦截器
     *
     * @param msg 消息
     * @return 返回是否继续处理
     */
    default boolean onPreHandleMessage(MessageContext msg) {
        return true;
    }

    /**
     * 处理消息后 拦截器
     *
     * @param msg 消息
     */
    default void onPostHandleMessage(MessageContext msg) {

    }

    /**
     * 发送处理消息前 拦截器
     *
     * @param result  处理结果
     * @param msg     消息
     * @param handler 处理器
     * @return 返回是否继续发送
     */
    default boolean onPreSendMessage(String result, MessageContext msg, MessageHandler handler) {
        return true;
    }

    /**
     * 发送处理消息后 拦截器
     *
     * @param result  处理结果
     * @param msg     消息
     * @param handler 处理器
     */
    default void onPostSendMessage(String result, MessageContext msg, MessageHandler handler) {

    }
}
